//编写应用程序（SortArray.java），使用字节输入/输出流实现数据的保存和读取。
//        要求功能如下：
//
//        输入1~100之间的整型数据保存到数组（数组大小为10）中
//        将数组排序（由小到大）后的元素保存到指定的文件中
//        如果文件不存在，则创建文件
//        从文件中读取排序后的元素并按指定格式输出
//        利用异常处理机制处理可能发生的错误
//        测试说明
//        平台会对你编写的代码进行测试：
//
//        测试输入：70 94 21 43 76 60 70 37 75 80 ；
//
//        预期输出：
//        21<37<43<60<70<70<75<76<80<94

package step1;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Encrypt {
    public static void main(String[] args) throws IOException {
        // 指定要发送的电报内容
        String data = "今晚10点发动总攻";
        // 将电报分割成字符数组
        char[] array = data.toCharArray();
        // 打开指定存放电报的文件，如果文件不存在，则创建文件
        File file = new File("d:\\data.txt");
        if (!file.exists()) {
            file.createNewFile();
        }
        // 循环遍历字符数组，将每个字符加密处理
        for (int i = 0; i < array.length; i++) {
            array[i] = (char) (array[i] ^ 'q');
        }
        // 利用字符输出流FileWriter将加密后的字符数组写入文件中
        FileWriter out = new FileWriter(file);
        out.write(array, 0, array.length);
        out.flush();
        out.close();
        // 利用字符输入流FileReader读取文件，将密文输出
        int n;
        FileReader in1 = new FileReader(file);
        char[] buf = new char[10];
        System.out.println("密文：");
        while ((n = in1.read(buf)) != -1) {
            String s = new String(buf);
            System.out.print(s);
        }
        in1.close();
        // 利用字符输入流FileReader读取文件，将密文转换为明文输出
        FileReader in2 = new FileReader(file);
        System.out.println();
        System.out.println("明文：");
        while ((n = in2.read(buf)) != -1) {
            for (int i = 0; i < n; i++) {
                buf[i] = (char) (buf[i] ^ 'q');
            }
            String s = new String(buf);
            System.out.print(s);
        }
    }
}